1. Field of the Invention
This invention relates to cryptographic devices and, in particular, to a cryptographic device that can easily, securely and/or irreversibly be customized to provide specified cryptographic functionality.
2. Related Art
A “cryptographic device” is a device which can be used to perform cryptographic operations on data. Examples of cryptographic operations include key exchange operations, hash operations, digital signature operations, symmetric encryption (secret key) operations, asymmetric (public key) encryption operations, and key wrapping operations (for both symmetric and asymmetric keys). A “cryptographic characteristic” is an attribute of the manner in which a cryptographic operation is performed. An example of a cryptographic characteristic is the length of a cryptographic key. The cryptographic operations and cryptographic characteristics of a cryptographic device are sometimes referred to herein as the “cryptographic functionality” of the cryptographic device. The cryptographic functionality of a cryptographic device can be implemented by a computer processor executing instructions and/or accessing data stored on a data storage device. Herein, such instructions and/or data are sometimes referred to, singly or collectively, as “code.”
FIG. 1 is a block diagram of a typical way of producing and using a cryptographic device. Initially, as shown by block 101, a cryptographic device is “produced.” As used herein, at the end of “production” of a cryptographic device, the device includes the capability of performing cryptographic operations as described above. After production of the cryptographic device, “device fulfillment” takes place, as shown by block 102. “Device fulfillment,” as discussed and illustrated in more detail below, involves modifying the cryptographic device to tailor the cryptographic functionality of the cryptographic device in a specified manner. For example, the operation of a cryptographic device could be restricted so that cryptographic keys longer than a specified length cannot be used in performing cryptographic operations with which those keys are used. After device fulfillment, an application developer develops application code (see also FIG. 3), as shown by block 103, that causes particular cryptographic operations of the cryptographic device to be performed when the cryptographic device is used in an environment for which the application code is developed. For example, to ensure that the user of a cryptographic device is an authorized user, the application code may cause particular verification operations to occur when the cryptographic device is used. Finally, as shown by block 104, the cryptographic device is used in a particular environment to perform cryptographic operations in accordance with the requirements and/or restrictions established during device fulfillment and application development.
It can be desirable for a cryptographic device to be produced so as to provide flexible cryptographic functionality, so that the cryptographic functionality provided by the device can be tailored to accommodate different needs or needs that change over time. However, in some previous cryptographic devices, modification of cryptographic functionality is impossible. In other cryptographic devices, modification of cryptographic functionality is undesirably complex, compromises the security of other aspects of the cryptographic device's operation, or cannot be provided in a manner that enables the cryptographic device to satisfy other criteria (such as export regulations).
For example, a cryptographic operation can include various sub-operations, such as, for example, mathematical “primitive” operations (e.g., addition, subtraction, multiplication, exponentiation), operation(s) used in generating cryptographic keys, operations for establishing the length of particular data and operations for padding particular data. In some situations, an application developer may desire the performance of a cryptographic operation that can be easily implemented by augmenting or revising the code of an existing cryptographic operation of a cryptographic device so that the performance of one or several sub-operations are added to the existing cryptographic operation and/or replace sub-operations already part of the existing cryptographic operation. As shown in FIG. 2, in previous cryptographic devices, the application code 201, in interacting with the code stored on a cryptographic device 200 via an application code interface 202, can only directly access the cryptographic operations 203: the component parts (e.g., mathematical primitive operations 204) of the cryptographic operations 203 have not been accessible apart from the performance of a cryptographic operation. Thus, an application developer cannot produce application code that requires a new cryptographic operation unless all of the code for the new cryptographic operation is downloaded to (i.e., transferred to and stored on) the cryptographic device. As can be appreciated, the undesirability of downloading code for new cryptographic operations to a cryptographic device increases as the number of devices with which the application code may interact increases. Thus, the lack of accessibility to component parts of a cryptographic operation can make development of new application code or modification of existing application code a difficult, time-consuming and costly undertaking.
In some previous cryptographic devices, certain cryptographic characteristics have been established at the time of production of the cryptographic device so that those cryptographic characteristics cannot later be modified (e.g., the cryptographic characteristics are stored in a ROM). Inhibiting the modification of the cryptographic functionality of a cryptographic device can be desirable to ensure that the device will be deemed to satisfy export regulations for cryptographic devices and/or to meet customer requirements for device security. However, such inflexibility limits the utility of any particular cryptographic device. For example, a cryptographic device that has particularly robust cryptographic functionality may be desirable for domestic use, but unacceptable for export to foreign customers, while a cryptographic device having relatively weaker cryptographic capability may be acceptable for export, but unappealing to domestic customers. Thus, if the cryptographic functionality of a cryptographic device cannot be modified, it is often necessary to produce a variety of different instantiations of such cryptographic device that each have different cryptographic functionality designed to satisfy a particular user, users or type of user.